package com.ruoyi.plus.pub.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.plus.pub.domain.PubNoticePlus;
import com.ruoyi.plus.pub.domain.PubNoticeReceiver;

import java.util.List;

/**
 * 系统公告通知接收人Service接口
 *
 */
public interface IPubNoticeReceiverService extends IService<PubNoticeReceiver>{

    /**
     * 查询系统公告通知接收人列表
     * 
     * @param pubNoticeReceiver 系统公告通知接收人
     * @return 系统公告通知接收人集合
     */
    List<PubNoticeReceiver> selectPubNoticeReceiverList(PubNoticeReceiver pubNoticeReceiver);

    /**
     * 批量保存通知接收人信息
     * @param pubNoticePlus
     * @param userIds
     */
    void saveReceivers(PubNoticePlus pubNoticePlus, List<Long> userIds);

    /**
     * 获取某通知的所有接收人id
     * @param noticeId
     * @return
     */
    List<Long> noticeReceiverIds(Long noticeId);

    /**
     * 通过通知id删除接收人信息
     * @param noticeId

     */
    void deleteReceiversByNoticeId(Long noticeId);

    /**
     * 获取用户未阅读通知的数量
     * @param userId
     * @return
     */
    int unReadCount(Long userId,String systemType);

    /**
     * 市政报修获取用户未读通知数
     * @param userId
     * @return
     */
    int unReadCountByRepair(Long userId);

    /**
     * 更新通知状态 1未发布, 2已发布, 3已撤销
     * @param pubNoticeReceiver
     * @return
     */
    int updateNoticeStatus(PubNoticeReceiver pubNoticeReceiver);

    /**
     * 更新通知已读状态 1已读, 2未读
     * @param pubNoticeReceiver
     * @return
     */
    int updateReadStatus(PubNoticeReceiver pubNoticeReceiver);

    /**
     * 保存通知接收人信息
     * @param userIds
     * @param pubNoticePlus
     * @return
     */
    void deleteAndSaveReceivers(List<Long> userIds, PubNoticePlus pubNoticePlus);

    /**
     * 志愿者注册审核通过,朋友圈审核通过,志愿活动签到签退提醒等通知
     * @param userIds
     * @param msg
     */
    void saveNoticeAndReceivers(Long[] userIds, String msg);

}
